package com.gitee.neuray.security.par.ParExamPlan.biz;

import com.gitee.neuray.security.common.msg.TableResultResponse;
import com.gitee.neuray.security.common.util.Query;
import com.gitee.neuray.security.par.ParExamCate.biz.ParExamCateBiz;
import com.gitee.neuray.security.par.ParExamCate.entity.ParExamCateEntity;
import com.gitee.neuray.security.par.ParExamItem.biz.ParExamItemBiz;
import com.gitee.neuray.security.par.ParExamItem.entity.ParExamItemEntity;
import com.gitee.neuray.security.par.basicData.biz.ParBasicDataBiz;
import com.gitee.neuray.security.par.basicData.entity.ParBasicDataEntity;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.stereotype.Service;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.springframework.transaction.annotation.Transactional;
import com.gitee.neuray.security.common.biz.BaseBiz;

import com.gitee.neuray.security.par.ParExamPlan.mapper.ParExamPlanMapper;
import com.gitee.neuray.security.par.ParExamPlan.entity.ParExamPlanEntity;
import tk.mybatis.mapper.entity.Example;

import javax.annotation.Resource;


@Service
@Transactional(rollbackFor = Exception.class)
public class ParExamPlanBiz extends BaseBiz<ParExamPlanMapper,ParExamPlanEntity> {
    @Override
    protected String getPageName() {
        return "ParExamPlan"+"Biz";
    }
    @Resource
    private ParExamCateBiz parExamCateBiz;
    @Resource
    private ParBasicDataBiz parBasicDataBiz;
    @Resource
    private ParExamPlanMapper parExamPlanMapper;
    @Resource
    private ParExamItemBiz parExamItemBiz;

    public TableResultResponse<ParExamPlanEntity> queryPlan(Query query, ParExamPlanEntity parExamPlanEntity){
        Page<Object> result = PageHelper.startPage(query.getPageNo(), query.getPageSize());
        /*Example example = new Example(ParExamPlanEntity.class);
        Example.Criteria criteria = example.createCriteria();

        //如果是机关，考评类型作为查找键
        if(parExamPlanEntity.getKpjhmc()!= null){
            criteria.andLike("kpjhmc","%"+parExamPlanEntity.getKpjhmc()+"%");
        }
        if(parExamPlanEntity.getDwlx()!= null){
            criteria.andEqualTo("dwlx",parExamPlanEntity.getDwlx());
        }
        if(parExamPlanEntity.getKssjStart() != null && parExamPlanEntity.getKssjEnd() != null){
            criteria.andGreaterThanOrEqualTo("kssj",parExamPlanEntity.getKssjStart());
            criteria.andLessThanOrEqualTo("kssj",parExamPlanEntity.getKssjEnd());
        }
        if(parExamPlanEntity.getJssjStart() != null && parExamPlanEntity.getJssjEnd() != null){
            criteria.andGreaterThanOrEqualTo("jssj",parExamPlanEntity.getJssjStart());
            criteria.andLessThanOrEqualTo("jssj",parExamPlanEntity.getJssjEnd());
        }
        criteria.andEqualTo("scbj","0");
        criteria.andIsNull("kpr");
        criteria.andIsNotNull("dwlx");
        example.orderBy("crtTime");
        example.orderBy("kpjhmc");*/
        List<ParExamPlanEntity> list = parExamPlanMapper.queryPlan(parExamPlanEntity);

        return new TableResultResponse<ParExamPlanEntity>(result.getPageSize(),result.getPageNum(),result.getPages(),result.getTotal(),list);
    }

    /*public TableResultResponse<ParExamPlanEntity> queryPlanPersonnel(Query query, ParExamPlanEntity parExamPlanEntity){
        Page<Object> result = PageHelper.startPage(query.getPageNo(), query.getPageSize());
        List<ParExamPlanEntity> list = parExamPlanMapper.queryPlan(parExamPlanEntity);

        return new TableResultResponse<ParExamPlanEntity>(result.getPageSize(),result.getPageNum(),result.getPages(),result.getTotal(),list);
    }*/

    public void insertPlan(ParExamPlanEntity parExamPlanEntity,String type,String orgCode){

        parExamPlanEntity.setZt("1");
        parExamPlanEntity.setScbj("0");
        if("personnel".equals(type)){
            parExamPlanEntity.setDwlx("");
            //设置考评人所在部门
            parExamPlanEntity.setKpr(orgCode);
        }
        this.insertSelective(parExamPlanEntity);
        String kpjhbid = parExamPlanEntity.getId();
        //部门级层级单位+机关
        if("org".equals(type)){
            ParExamCateEntity parExamCateEntityJc = new ParExamCateEntity();
            parExamCateEntityJc.setKpjhbid(kpjhbid);
            //考评工作分类（1、基础性工作2、指令性工作3、综合评定）
            parExamCateEntityJc.setKpgzfl("1");
            //考评内容类型（1、记成效2、记差错）
            parExamCateEntityJc.setKpnrlx("2");

            ParExamCateEntity parExamCateEntityZl = new ParExamCateEntity();
            parExamCateEntityZl.setKpjhbid(kpjhbid);
            parExamCateEntityZl.setKpgzfl("2");
            parExamCateEntityZl.setKpnrlx("2");

            ParExamCateEntity parExamCateEntityZh = new ParExamCateEntity();
            parExamCateEntityZh.setKpjhbid(kpjhbid);
            parExamCateEntityZh.setKpgzfl("3");
            parExamCateEntityZh.setKpnrlx("2");
            parExamCateBiz.insertSelective(parExamCateEntityJc);
            parExamCateBiz.insertSelective(parExamCateEntityZl);
            parExamCateBiz.insertSelective(parExamCateEntityZh);
        //个人级
        }else{
            ParExamCateEntity parExamCateEntityJc = new ParExamCateEntity();
            parExamCateEntityJc.setKpjhbid(kpjhbid);
            //考评工作分类（1、基础性工作2、指令性工作3、综合评定）
            parExamCateEntityJc.setKpgzfl("1");
            //考评内容类型（1、记成效2、记差错）
            parExamCateEntityJc.setKpnrlx("3");

            ParExamCateEntity parExamCateEntityZl = new ParExamCateEntity();
            parExamCateEntityZl.setKpjhbid(kpjhbid);
            parExamCateEntityZl.setKpgzfl("2");
            parExamCateEntityZl.setKpnrlx("3");

            ParExamCateEntity parExamCateEntityZh = new ParExamCateEntity();
            parExamCateEntityZh.setKpjhbid(kpjhbid);
            parExamCateEntityZh.setKpgzfl("3");
            parExamCateEntityZh.setKpnrlx("3");
            parExamCateBiz.insertSelective(parExamCateEntityJc);
            parExamCateBiz.insertSelective(parExamCateEntityZl);
            parExamCateBiz.insertSelective(parExamCateEntityZh);
        }
        //部门级层级单位
        if("2".equals(parExamPlanEntity.getDwlx())){
            Example example = new Example(ParBasicDataEntity.class);
            Example.Criteria criteria = example.createCriteria();
            criteria.andEqualTo("parLevel","3");
            criteria.andEqualTo("dwlx","2");
            List<ParBasicDataEntity> list = parBasicDataBiz.selectByExample(example);
            for(ParBasicDataEntity basicEntity : list){
                ParExamCateEntity cateEntity = new ParExamCateEntity();
                cateEntity.setKpjhbid(kpjhbid);
                cateEntity.setKpdl(basicEntity.getId());
                //考评内容类型（1、记成效2、记差错）
                cateEntity.setKpnrlx("1");
                parExamCateBiz.insertSelective(cateEntity);
                ParExamItemEntity parExamItemEntity = new ParExamItemEntity();
                parExamItemEntity.setKpxmflid(cateEntity.getId());
                parExamItemEntity.setKpxid(basicEntity.getId());
                parExamItemBiz.insertSelective(parExamItemEntity);
            }
        }
    }
    public List<Map> queryPeriod(Map map){
        return parExamPlanMapper.queryPeriod(map);
    }
}
